//爬楼梯------70
// 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？

#include <stdio.h>

int climbStairs(int n) 
{
    int left = 0;
    int lleft = 0;
    int now = 1;
    {
        for(int i = 1; i <= n; i++)
        {
            lleft = left;
            left = now;
            now = lleft + left;
        }
    }
    return now;
    // if(n == 1 || n == 2)
    //     return n;
    // int *dp = (int*)malloc(sizeof(int)*(n+1));
    // dp[1] = 1;
    // dp[2] = 2;
    // for(int i = 3; i <= n; i++)
    // {
    //     dp[i] = dp[i-1] + dp[i-2];
    // }
    // return dp[n];
    // free(dp);
}

int main()
{
    int n;
    printf("你要爬几层楼梯:");
    scanf("%d",&n);
    printf("你有%d种方法\n",climbStairs(n));
    return 0;
}